<?php

class UserController extends Zend_Controller_Action {

	private $_flashMessenger;
	
	public function init() {
		// Инит FlashMessenger
		$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');

//		// Если пользователь уже авторизовани, то прекидываем его на главную с сообщением
//		if (Zend_Auth::getInstance()->hasIdentity()) {
//			$this->_flashMessenger->addMessage('Вы уже авторизованы.');
//			$this->_redirect('/');
//		}
	}

	public function indexAction() {
		// action body
	}

	public function loginAction() {
		$loginForm = new Application_Form_Login();

		if ($this->getRequest()->isPost()) {
			$request = $this->getRequest()->getParams();
			if (!$loginForm->isValid($request)) {
				$errors = $loginForm->getErrors();
				foreach ($errors as $error) {
					$this->_flashMessenger->addMessage($error);
				}
				$this->_redirect('user/login');
			}

			Zend_Auth::getInstance()->clearIdentity();

			$login = $this->getRequest()->getPost('login', 0);
			$password = $this->getRequest()->getPost('password', 0);
			$rememberMy = $this->getRequest()->getPost('remember', 0);

			$dbAdapter = Zend_Registry::get('db');
			
			$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
			$authAdapter->setTableName('users');
			$authAdapter->setIdentityColumn('login');
			$authAdapter->setCredentialColumn('password');
			$authAdapter->setIdentity($login);
			$authAdapter->setCredential(md5($password));

			$auth = Zend_Auth::getInstance();
			$result = $auth->authenticate($authAdapter);
			if ($result->isValid()) {
				if ($rememberMy) {
					Zend_Session::rememberMe(3600*3);// 3 часа
				}
				// добавление в сессию данных пользователя за исключением пароля и редирект на главную
				$data = $authAdapter->getResultRowObject(null, 'password');
				$auth->getStorage()->write($data);
				$this->_redirect('/');
			} else {
				$this->_flashMessenger->addMessage('Неверный Логин либо Пароль.');
				$this->_redirect('user/login');
			}
		}

		$this->view->assign('loginForm', $loginForm);
	}

	public function logoutAction() {
		if ($this->getRequest()->isPost()) {
			if ($this->getRequest()->getPost('exit', null)) {
				Zend_Auth::getInstance()->clearIdentity();
			}
			$this->_redirect('/');
		}

		$logoutForm = new Application_Form_Logout();
		$this->view->assign('logoutForm', $logoutForm);
	}

	public function registrationAction() {
//		if (Zend_Auth::getInstance()->hasIdentity()) {
//			$this->_flashMessenger->addMessage('Вы уже авторизованы.');
//			$this->_redirect('/');
//		}

		$registrationForm = new Application_Form_Registration();

		$this->view->assign('registrationForm', $registrationForm);
	}

	public function profileAction() {
		if ($this->getRequest()->isGet()) {
			$login = $this->getRequest()->getParam('login', null);
			$userMapper = new Application_Model_Mapper_Users();
			$user = $userMapper->findByLogin($login);
			$this->view->assign('user', $user->toArray());
		}
	}
}